package com.mzj.saas.commons;

import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.NumberFormat;
import java.text.ParseException;

/**
 * 转换工具类（继承自hutool中的Convert，可做拓展）
 *
 * @author JsonChen
 */
public class ConvertUtils extends cn.hutool.core.convert.Convert {
	
	private static final BigDecimal ONE_HUNDRED = new BigDecimal("100");
	
	/**
	 * 金额分转元
	 * 
	 * @param fen
	 * @return
	 */
	public static BigDecimal fen2yuan(Integer fen) {
		return fen == null ? BigDecimal.ZERO : new BigDecimal(fen).divide(ONE_HUNDRED, 2, RoundingMode.HALF_UP);
	}
	
	/**
	 * 金额分转元
	 * 
	 * @param fen
	 * @return
	 */
	public static BigDecimal fen2yuan(Long fen) {
		return fen == null ? BigDecimal.ZERO : new BigDecimal(fen).divide(ONE_HUNDRED, 2, RoundingMode.HALF_UP);
	}
	
	/**
	 * 金额元转分
	 * 
	 * @param yuan
	 * @return
	 */
	public static int yuan2fen(BigDecimal yuan) {
		return yuan == null ? 0 : yuan.multiply(ONE_HUNDRED).intValue();
	}

	/*
	 *元转换为分
	 */
	public static String yuanToFen(String amount) {
		NumberFormat format = NumberFormat.getInstance();
		try {
			Number number = format.parse(amount);
			double temp = number.doubleValue() * 100.0;
			format.setGroupingUsed(false);
			// 设置返回数的小数部分所允许的最大位数
			format.setMaximumFractionDigits(0);
			amount = format.format(temp);
		} catch (ParseException e) {
			e.printStackTrace();
		}
		return amount;
	}

	/*
	 *分转换为元
	 */
	public static String fenToYuan(String amount) {
		NumberFormat format = NumberFormat.getInstance();
		try {
			Number number = format.parse(amount);
			double temp = number.doubleValue() / 100.0;
			format.setGroupingUsed(false);
			// 设置返回的小数部分所允许的最大位数
			format.setMaximumFractionDigits(2);
			amount = format.format(temp);
		} catch (ParseException e) {
			e.printStackTrace();
		}
		return amount;
	}
	
}
